package com.ccyang;

import java.util.stream.IntStream;

/**
 * @author: yangjinpeng
 * @date: 2018-12-23
 * @description: Stream表达式学习
 */
public class StreamDemo1 {

    public static void main(String[] args) {

        int[] nums = {1,2,3};

        // 外部迭代
        int sum = 0;
        for(int i : nums){
            sum += i;
        }
        System.out.println("结果是：" + sum);
        System.out.println("-------------------");

        // 使用Stream 内部迭代
        // map 是中间操作（返回Stream  的操作）
        // sum 是终止操作
        int sum2 = IntStream.of(nums).map(StreamDemo1::doubleNum).sum();
        System.out.println("结果是：" + sum2);
        System.out.println("-------------------");

        System.out.println("惰性求值：在终止操作没有调用的情况下，中间操作不会执行");
        IntStream.of(nums).map(StreamDemo1::doubleNum);   // 不执行终止操作
    }

    public static int doubleNum(int i){
        System.out.println("执行乘以2操作");
        return i * 2;
    }

}
